1. Field of the Invention
This invention relates to resetting a bus and more particularly relates to resetting an Inter-Integrated Circuit (I2C) bus.
2. Description of the Related Art
The I2C serial protocol is often used to create a high-level communication path between devices in electronic systems. An I2C bus requires only a clock line and a data line, and operates using a simple communication protocol. The clock line and data line are each bidirectional. Each device connected to an I2C bus has a unique address. A device initiating a transfer is referred to as a bus master while devices responding to the transfer are referred to as bus slaves. Any I2C device may function as the bus master or as a bus slave. The simplicity and flexibility of the I2C bus makes it a cost effective communications solution in many applications.
The I2C bus master typically issues a START command over the I2C bus to other devices, followed by an address of a destination I2C bus slave device. In addition, the I2C bus master also specifies whether data will be read or written. The destination I2C bus slave transmits an ACKNOWLEDGE signal, and the I2C bus master transmits or receives data. When the transfer is complete, the I2C bus master transmits a STOP and the transaction concludes.
Unfortunately, the simplicity of the I2C bus can be a disadvantage if one or more elements of the I2C bus stops functioning, a condition referred to hereafter as a hang. There are only very limited recovery mechanisms built into I2C devices. When an I2C device hangs, the device typically must be reset to free the bus.
Unfortunately, I2C devices are often on different card boundaries within an electronic system. As a result, specific resets are not available for the hung I2C. If a specific reset is not available, a power cycle is required to free the bus. Yet a power cycle is often time consuming and can affect devices and systems far beyond the hung I2C device.
From the foregoing discussion, there is a need for an apparatus, system, and method that reset an I2C device. Beneficially, such an apparatus, system, and method would allow I2C devices to be reset without providing specific reset circuits and without cycling power for an extended system.